package com.vf.activity.mapper;

import java.util.List;
import com.vf.activity.domain.ActivityApplications;
import com.vf.activity.domain.DTO.ActivitiesDTO;
import com.vf.activity.domain.DTO.ApplicationsDTO;
import com.vf.activity.domain.VO.AddActivityVO;

/**
 * 活动参与申请Mapper接口
 * 
 * @author LBS
 * @date 2025-06-04
 */
public interface ActivityApplicationsMapper 
{
    /**
     * 查询活动参与申请
     * 
     * @param applicationId 活动参与申请主键
     * @return 活动参与申请
     */
    public ActivityApplications selectActivityApplicationsByApplicationId(Long applicationId);

    /**
     * 查询活动参与申请列表
     * 
     * @param activityApplications 活动参与申请
     * @return 活动参与申请集合
     */
    public List<ActivityApplications> selectActivityApplicationsList(ActivityApplications activityApplications);

    /**
     * 新增活动参与申请
     * 
     * @param activityApplications 活动参与申请
     * @return 结果
     */
    public int insertActivityApplications(ActivityApplications activityApplications);

    /**
     * 修改活动参与申请
     * 
     * @param activityApplications 活动参与申请
     * @return 结果
     */
    public int updateActivityApplications(ActivityApplications activityApplications);

    /**
     * 删除活动参与申请
     * 
     * @param applicationId 活动参与申请主键
     * @return 结果
     */
    public int deleteActivityApplicationsByApplicationId(Long applicationId);

    /**
     * 批量删除活动参与申请
     * 
     * @param applicationIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteActivityApplicationsByApplicationIds(Long[] applicationIds);

    /**
 * 根据用户ID获取活动申请列表
 *
 * @param userId 用户ID
 * @return 活动申请列表
 */
List<ApplicationsDTO> getActivityApplicationsByUserId(Long userId);

/**
 * 根据用户ID获取活动列表
 *
 * @param userId 用户ID
 * @return 活动列表
 */
List<ActivitiesDTO> getActivityByUserId(Long userId);

/**
 * 根据用户ID获取已参加的活动列表
 *
 * @param userId 用户ID
 * @return 已参加的活动列表
 */
List<ApplicationsDTO> getActivityJoinByUserId(Long userId);

/**
 * 根据用户ID获取特定状态的活动列表
 *
 * @param userId 用户ID
 * @return 特定状态的活动列表
 */
List<ApplicationsDTO> getActivityPByUserId(Long userId);

/**
 * 更新活动申请状态为未通过
 *
 * @param applicationId 申请ID
 * @return 更新影响的行数
 */
int updateActivityApplicationsNoPass(Long applicationId);

/**
 * 更新活动申请状态为通过
 *
 * @param applicationId 申请ID
 * @return 更新影响的行数
 */
int updateActivityApplicationsPass(Long applicationId);

/**
 * 用户参加活动
 *
 * @param addActivityVO 用户参加活动的信息
 * @return 影响的行数
 */
int joinActivity(AddActivityVO addActivityVO);

}
